import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Scanner;

public class RafRead {
    public static void main(String[] args) throws IOException {
        /*RandomAccessFile raf=new RandomAccessFile("D:/刘景景的测试文件夹/user.txt","rw");

        byte[] data=new byte[23];
        for (long i = 0; i < raf.length() / 50; i++) {
            raf.read(data);
            String name=new String(data,"UTF-8").trim();

            raf.read(data);
            String passWord =new String(data,"UTF-8").trim();

            int age=raf.readInt();

            System.out.println(name+","+passWord+","+age);
        }
        raf.close();*/
        /*
         * 作业二：修改用户信息
         *
         * 要求：
         * 对"D:/刘景景的测试文件夹/user.txt"中的用户进行修改密码。
         *
         * 提示：
         * 1,提示用户输入用户名。
         * 2,循环读取该文件，循环次数应当是文件长度/100。
         * 3,每条记录读取时，首先读取32字节，这是用户名，将该字节按照UTF-8编码转换为字符串并trim()。
         * 4,比对用户名，如果不是用户指定的用户名，则读取下一条。
         * 5,如果是用户指定的用户名，则提示用户输入原密码、新密码、确认新密码。
         * 6,必须原密码正确、且两次新密码相同再可修改。
         * 7,如果从头到尾都没有查到用户输入的用户名，就输出"查无此人"。
         */
        Scanner scanner=new Scanner(System.in);
        RandomAccessFile raf=new RandomAccessFile("D:/刘景景的测试文件夹/user.txt","rw");
        System.out.println("输入用户名");
        String inputName=scanner.next();
        byte[] data=new byte[23];
        boolean flag=true;
        for (long i = 0; i < raf.length() / 50; i++) {
            raf.read(data);
            String name=new String(data,"UTF-8").trim();
            if (name.equals(inputName)){
                flag=false;
                System.out.println("输入原密码：");
                String pw=scanner.next();
                raf.read(data);
                String passWord=new String(data,"UTF-8").trim();
                raf.seek(raf.getFilePointer()-23);
                if (pw.equals(passWord)){
                    System.out.println("输入新密码:");
                    String npsw=scanner.next();
                    byte[] ndata=npsw.getBytes(StandardCharsets.UTF_8);
                    ndata= Arrays.copyOf(ndata,23);
                    raf.write(ndata);
                    System.out.println("修改成功");
                }else {
                    System.out.println("原密码错误");
                    break;
                }
                break;
            }else raf.seek(raf.getFilePointer()+27);
        }
        if (flag){
            System.out.println("没有找到该用户");
        }

        raf.close();

    }
}
